import pandas as pd


def vertical_merge_excel_cols(file1_path, file2_path, output_path,
                              sheet_name='Sheet1', col_names=None):
    """
    纵向合并两个Excel文件的前两列
    参数：
    file1_path: 第一个Excel文件路径
    file2_path: 第二个Excel文件路径
    output_path: 输出文件路径
    sheet_name: 要读取的工作表名称（默认Sheet1）
    col_names: 自定义列名列表（默认使用原始列名）
    """
    try:
        # 读取第一个文件前两列
        df1 = pd.read_excel(file1_path, sheet_name=sheet_name).iloc[:, [0,2]]
        if col_names:  # 自定义列名
            df1.columns = col_names
        else:  # 保留原始列名
            df1.columns = [f"Column_{i + 1}" for i in range(2)]  # 默认列名

        # 读取第二个文件前两列
        df2 = pd.read_excel(file2_path, sheet_name=sheet_name).iloc[:, 0:2]
        df2.columns = df1.columns  # 保持列名一致

        # 纵向合并
        merged_df = pd.concat([df1, df2], axis=0, ignore_index=True)

        # 添加来源标识列（可选）
        merged_df['Data_Source'] = ['File1'] * len(df1) + ['File2'] * len(df2)

        # 保存结果
        merged_df.to_excel(output_path, index=False)
        print(f"合并完成！总行数：{len(merged_df)}")
        print(f"结果已保存至：{output_path}")

        return merged_df

    except FileNotFoundError as e:
        print(f"文件未找到：{str(e)}")
    except IndexError:
        print("错误：文件中至少需要包含两列数据")
    except Exception as e:
        print(f"处理过程中出现错误：{str(e)}")
    return None


# 使用示例 -----------------------------------
if __name__ == "__main__":
    # 输入文件路径
    input_files = {
        "file1": "数据/数据.xlsx",
        "file2": "数据/CS2_预测结果.xlsx",
    }
    output_file = "数据/CS2_result.xlsx"

    # 可选自定义列名（如不需要设为None）
    custom_columns = ["组分x", "输出"]

    # 执行合并
    result = vertical_merge_excel_cols(
        input_files["file1"],
        input_files["file2"],
        output_file,
        col_names=custom_columns
    )

    # 显示合并结果摘要
    if result is not None:
        print("\n合并结果摘要：")
        print(f"总行数：{len(result)}")
        print(f"前5行数据：")
        print(result.head())